package com.example.myweather.ViewModel

import androidx.lifecycle.ViewModel
import com.example.myweather.Repository.WeatherRepository
import com.example.myweather.Server.ApiClient
import com.example.myweather.Server.ApiServer
/*
 * WeatherViewModel 类是一个 ViewModel，用于管理与天气数据相关的业务逻辑。
 * 该类通过调用 WeatherRepository 中的方法来获取当前天气和天气预报数据。
 *
 * 参数：
 * - repository: WeatherRepository 对象，用于与 API 服务器进行交互
 */
class WeatherViewModel(val repository: WeatherRepository):ViewModel() {
    /*
    * 通过构造函数来创建 WeatherViewModel 的实例。
    * 该构造函数使用默认的 WeatherRepository 实例，该实例基于一个已经创建好的 ApiClient 实例。
    */
    constructor():this(WeatherRepository(ApiClient().getClient().create(ApiServer::class.java)))
    /*
         * 加载当前天气数据的方法。
         * 参数：
         * - lat: 纬度，用于指定查询位置
         * - lng: 经度，用于指定查询位置
         * - unit: 单位类型，用于指定温度单位（如摄氏度或华氏度）
         * 返回：调用 WeatherRepository 中的 getCurrentWeather 方法，并传递相应的参数
         */
    fun loadCurrentWeather(lat:Double,lng:Double,unit:String)=
        repository.getCurrentWeather(lat,lng, unit)
    /*
        * 加载天气预报数据的方法。
        * 参数：
        * - lat: 纬度，用于指定查询位置
        * - lng: 经度，用于指定查询位置
        * - unit: 单位类型，用于指定温度单位（如摄氏度或华氏度）
        * 返回：调用 WeatherRepository 中的 getForecastWeather 方法，并传递相应的参数
        */
    fun loadForecastWeather(lat:Double,lng:Double,unit:String)=
        repository.getForecastWeather(lat,lng, unit)
}